package com.example.notepad.db;

import android.annotation.SuppressLint;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

import com.example.notepad.bean.NotePad;

import java.util.ArrayList;
import java.util.List;

public class MyDbHelper extends SQLiteOpenHelper {
    // 数据库版本
    private  static final int version = 1;

    //数据库名
    private  static final String name = "notepad.db";

    /**
     * MyDbHelper 构造方法。
     *
     * @param context 应用上下文
     */
    public MyDbHelper(@Nullable Context context) {
        super(context, name, null, version);
    }

    /**
     * 创建数据库表。
     *
     * @param db 可写的数据库实例
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table notepad(id integer primary key autoincrement,title text,content text,time text)";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
    /**
     * 向数据库中插入一条新记录。
     *
     * @param notePad 要插入的 NotePad 对象
     */
    public  void insert(NotePad notePad){
        // 获取一个可写的数据库实例
        SQLiteDatabase db = getWritableDatabase();
        // 插入记录的 SQL 语句
        String sql = "insert into notepad(title,content,time) values (?,?,?)";
        // 执行 SQL 语句插入数据
        db.execSQL(sql,new String[]{notePad.getTitle(),notePad.getContent(), notePad.getTime()});
    }

    /**
     * 查询数据库中所有记录。
     *
     * @return 包含所有 NotePad 对象的列表
     */
    @SuppressLint("Range")
    public List<NotePad> findAll(){
        // 获取一个可写的数据库实例
        SQLiteDatabase db = getWritableDatabase();
        // 查询所有记录的 SQL 语句
        String sql = "select * from notepad";
        // 执行查询并返回游标
        Cursor cursor = db.rawQuery(sql, null);
        // 创建用于存储 NotePad 对象的列表
        List<NotePad> list= new ArrayList<>();
        // 遍历游标，提取数据并创建 NotePad 对象
        while (cursor.moveToNext()){
            NotePad notePad = new NotePad();
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            String title = cursor.getString(cursor.getColumnIndex("title"));
            String content = cursor.getString(cursor.getColumnIndex("content"));
            String time = cursor.getString(cursor.getColumnIndex("time"));
            notePad.setId(id);
            notePad.setTitle(title);
            notePad.setContent(content);
            notePad.setTime(time);
            list.add(notePad);
        }
        //关闭cursor，释放资源
        cursor.close();
        // 返回包含所有 NotePad 对象的列表
        return list;

    }

    public void delete(NotePad notePad) {
        SQLiteDatabase db = getWritableDatabase();
        String sql = "delete from notepad where id = ?";
        db.execSQL(sql,new Object[]{notePad.getId()});
    }
}